/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package geradorentidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Familia
 */
@Entity
@Table(name = "slw_usuario")
@NamedQueries({
    @NamedQuery(name = "SlwUsuario.findAll", query = "SELECT s FROM SlwUsuario s"),
    @NamedQuery(name = "SlwUsuario.findByIdUsuario", query = "SELECT s FROM SlwUsuario s WHERE s.idUsuario = :idUsuario"),
    @NamedQuery(name = "SlwUsuario.findByLogin", query = "SELECT s FROM SlwUsuario s WHERE s.login = :login"),
    @NamedQuery(name = "SlwUsuario.findBySenha", query = "SELECT s FROM SlwUsuario s WHERE s.senha = :senha"),
    @NamedQuery(name = "SlwUsuario.findByDatAtivacao", query = "SELECT s FROM SlwUsuario s WHERE s.datAtivacao = :datAtivacao"),
    @NamedQuery(name = "SlwUsuario.findByIndAtivo", query = "SELECT s FROM SlwUsuario s WHERE s.indAtivo = :indAtivo"),
    @NamedQuery(name = "SlwUsuario.findByDatInativacao", query = "SELECT s FROM SlwUsuario s WHERE s.datInativacao = :datInativacao")})
public class SlwUsuario implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID_USUARIO")
    private Long idUsuario;
    @Basic(optional = false)
    @Column(name = "LOGIN")
    private String login;
    @Basic(optional = false)
    @Column(name = "SENHA")
    private String senha;
    @Basic(optional = false)
    @Column(name = "DAT_ATIVACAO")
    @Temporal(TemporalType.DATE)
    private Date datAtivacao;
    @Basic(optional = false)
    @Column(name = "IND_ATIVO")
    private char indAtivo;
    @Column(name = "DAT_INATIVACAO")
    @Temporal(TemporalType.DATE)
    private Date datInativacao;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "slwUsuario")
    private List<SlwNotificacao> slwNotificacaoList;
    @JoinColumn(name = "GRUPO_USUARIO", referencedColumnName = "ID_GRUPO_USUARIO")
    @ManyToOne
    private SlwGrupoUsuario slwGrupoUsuario;
    @JoinColumn(name = "UNIDADE_OPERACIONAL", referencedColumnName = "ID_UNIDADE")
    @ManyToOne(optional = false)
    private SlwUnidadeOperacional slwUnidadeOperacional;
    @JoinColumn(name = "PERFIL", referencedColumnName = "COD_PERFIL")
    @ManyToOne(optional = false)
    private SlwPerfil slwPerfil;

    public SlwUsuario() {
    }

    public SlwUsuario(Long idUsuario) {
        this.idUsuario = idUsuario;
    }

    public SlwUsuario(Long idUsuario, String login, String senha, Date datAtivacao, char indAtivo) {
        this.idUsuario = idUsuario;
        this.login = login;
        this.senha = senha;
        this.datAtivacao = datAtivacao;
        this.indAtivo = indAtivo;
    }

    public Long getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(Long idUsuario) {
        this.idUsuario = idUsuario;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public Date getDatAtivacao() {
        return datAtivacao;
    }

    public void setDatAtivacao(Date datAtivacao) {
        this.datAtivacao = datAtivacao;
    }

    public char getIndAtivo() {
        return indAtivo;
    }

    public void setIndAtivo(char indAtivo) {
        this.indAtivo = indAtivo;
    }

    public Date getDatInativacao() {
        return datInativacao;
    }

    public void setDatInativacao(Date datInativacao) {
        this.datInativacao = datInativacao;
    }

    public List<SlwNotificacao> getSlwNotificacaoList() {
        return slwNotificacaoList;
    }

    public void setSlwNotificacaoList(List<SlwNotificacao> slwNotificacaoList) {
        this.slwNotificacaoList = slwNotificacaoList;
    }

    public SlwGrupoUsuario getSlwGrupoUsuario() {
        return slwGrupoUsuario;
    }

    public void setSlwGrupoUsuario(SlwGrupoUsuario slwGrupoUsuario) {
        this.slwGrupoUsuario = slwGrupoUsuario;
    }

    public SlwUnidadeOperacional getSlwUnidadeOperacional() {
        return slwUnidadeOperacional;
    }

    public void setSlwUnidadeOperacional(SlwUnidadeOperacional slwUnidadeOperacional) {
        this.slwUnidadeOperacional = slwUnidadeOperacional;
    }

    public SlwPerfil getSlwPerfil() {
        return slwPerfil;
    }

    public void setSlwPerfil(SlwPerfil slwPerfil) {
        this.slwPerfil = slwPerfil;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idUsuario != null ? idUsuario.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof SlwUsuario)) {
            return false;
        }
        SlwUsuario other = (SlwUsuario) object;
        if ((this.idUsuario == null && other.idUsuario != null) || (this.idUsuario != null && !this.idUsuario.equals(other.idUsuario))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "geradorentidades.SlwUsuario[idUsuario=" + idUsuario + "]";
    }

}
